AUTOSAR 入门教程(18)Crypto
🔐 本文将讨论 AUTOSAR 中的加密堆栈(Crypto Stack),它负责为应用程序提供加密服务。加密堆栈由以下组件构成:
- CSM (加密服务管理器)
- CryIf (加密抽象层)
- 软件/硬件加密驱动

🛠️ 加密服务管理器(CSM)
CSM 是一个服务层模块,为应用程序提供标准接口来访问软件/硬件加密驱动提供的基础加密服务。这些服务可以通过两种方式访问:
- 同步方式:服务在函数返回时完成
- 异步方式:服务完成后调用回调函数
🔄 加密接口(CryIf)
CryIf 是一个 ECU 抽象层模块,它将底层软件/硬件驱动提供的服务从 CSM 中抽象出来,使 CSM 能够为应用程序提供标准化接口。
💾 加密驱动
加密驱动是一个 MCAL 模块,实现了加密服务的具体功能。它可以是:
- 软件模块
- 硬件模块(通常通过 SPI 处理器访问)
🌐 加密服务功能
AUTOSAR 加密堆栈可提供以下功能接口:
- 哈希(HASH)
- 消息认证码(MAC)
- 加密/解密
- 带关联数据的认证加密
- 签名
- 安全计数器
- 随机数生成
- 密钥管理
🧮 哈希服务使用示例
以哈希服务为例说明其使用方法:
-
配置阶段:
- 在 CSM 模块中配置哈希接口使用 SHA256/SHA384/SHA512 等算法
- 为作业(Job)配置加密原语(Crypto Object)
- 作业是指向原语的配置对象
-
调用阶段:
- 通过作业 ID 从 CSM 层引用该作业
- 同时需要定义 CSM 密钥、通道、队列、优先级和作业类型(同步/异步)
⚙️ CSM 操作类型
CSM 为加密服务定义了三种操作:
- START:定义新操作,带新的初始化参数
- UPDATE:接收输入数据,可提供中间结果
- FINISH:指示数据结束和操作完成
🔄 哈希算法执行流程
对数据块执行哈希算法时:
- 操作类型作为输入参数传递给 Csm_Hash 函数(START/UPDATE/FINISH)
- 如果数据不是一次性全部输入:
- 可以多次调用 Csm_Hash,使用 UPDATE 操作
- 最后调用 FINISH 操作获取最终结果